package logic;

import dao.ObraSocialPlanDAO;
import dto.ObraSocialPlanDTO;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author lucifer
 */
public class ObraSocialPlan {

  private int id;
  private int idObraSocial;
  private String nombre;

  public ObraSocialPlan(int id, int idObraSocial, String nombre) {
    this.id = id;
    this.idObraSocial = idObraSocial;
    this.nombre = nombre;
  }

  public ObraSocialPlan(ObraSocialPlanDTO dto) {
    this.id = dto.getId();
    this.idObraSocial = dto.getIdObraSocial();
    this.nombre = dto.getNombre();
  }

  public void Save() throws SQLException {
    ObraSocialPlanDTO dto = new ObraSocialPlanDTO(-1, idObraSocial, nombre);
    ObraSocialPlanDAO dao = ObraSocialPlanDAO.createDAO();
    id = dao.Save(dto);
  }

  public String Delete() {
    String err = null;
    try {
      ObraSocialPlanDAO.createDAO().Delete(id);
    } catch (SQLException e) {
      err = e.getSQLState();
    }
    return err;
  };

  public static ArrayList<ObraSocialPlanDTO> All(int idObraSocial) throws SQLException {
    ObraSocialPlanDAO dao = ObraSocialPlanDAO.createDAO();
    return dao.All(idObraSocial);
  }

  public static ObraSocialPlanDTO SearchByID(int id) throws SQLException {
    ObraSocialPlanDAO dao = ObraSocialPlanDAO.createDAO();
    return dao.ObraSocialPlanDTO(id);
  }

  /* FIXME LATER
  public ObraSocialPlanDTO EditNombre(String nombre) throws SQLException {
    ObraSocialPlanDAO dao = ObraSocialPlanDAO.createDAO();
    return dao.EditString(id, "nombre", nombre);
  }
  */

  public static ArrayList<ObraSocialPlanDTO> SearchByNombre(String name) throws SQLException {
    ObraSocialPlanDAO dao = ObraSocialPlanDAO.createDAO();
    return dao.SearchByNombre(name);
  }

  public int getId() {
    return id;
  }

  public int getIdObraSocial() {
    return idObraSocial;
  }

  public String getNombre() {
    return nombre;
  }

}
